package org.example.day03;

import java.util.Scanner;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO+
 * <p>  程序员小明打了一辆出租车去上班。出于职业敏感，他注意到这辆出租车的计费表有点问题，总是偏大。 </p> <p>  出租车司机解释说他不喜欢数字4，所以改装了计费表，任何数字位置遇到数字4就直接跳过，其余功能都正常。 </p> <p>  比如： </p> <p>  1.     23再多一块钱就变为25； </p> <p>  2.     39再多一块钱变为50； </p> <p>  3.     399再多一块钱变为500； </p> <p>  小明识破了司机的伎俩，准备利用自己的学识打败司机的阴谋。 </p> <p>  给出计费表的表面读数，返回实际产生的费用。 </p> <p>  <br> </p>
 * <p>
 * 程序员小明打了一辆出租车去上班。出于职业敏感，他注意到这辆出租车的计费表有点问题，总是偏大。
 * 出租车司机解释说他不喜欢数字4，所以改装了计费表，任何数字位置遇到数字4就直接跳过，其余功能都正常。
 * 比如：
 * 1.     23再多一块钱就变为25；
 * 2.     39再多一块钱变为50；
 * 3.     399再多一块钱变为500；
 * 小明识破了司机的伎俩，准备利用自己的学识打败司机的阴谋。
 * 给出计费表的表面读数，返回实际产生的费用。
 * @date 2024/3/11 15:22
 */
public class test050 {

    // 定义一个将跳过数字4的里程表读数转换为实际费用的函数
    public static int skipped_number_to_real_cost(int N) {
        int real_cost = 0; // 实际费用初始化为0
        int base = 1; // 用于计算当前位权重的变量
        while (N > 0) {
            int digit = N % 10; // 取出N的最低位
            N /= 10; // 将N的最低位去掉
            if (digit > 4) digit--; // 如果数字大于4，那么在实际数中要减去1
            real_cost += digit * base; // 累加到实际费用中
            base *= 9; // 更新权重
        }
        return real_cost; // 返回实际费用
    }

    // 主函数
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt(); // 输入里程表读数
        System.out.println(skipped_number_to_real_cost(N)); // 输出实际费用
    }
}

